#include<bits/stdc++.h>

using namespace std;
int n,a[1010][6],p,pp,len,h,shangxian,jl,qdl;
string st[1010];
bool kf[1010];
int limi[10]={255,255,255,255,65535};
int main()
{
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	cin>>n;
	for(int i=1;i<=n;++i)
	{
		cin>>st[i];
		if(st[i][0]=='S') kf[i]=1;
		else kf[i]=0;
		cin>>st[i];
		p=pp=0;
		len=st[i].size();
		for(int j=0;j<len;++j)
		{
			if(st[i][j]=='.')++p;
			if(st[i][j]==':')++pp;
		}
		if(p!=3||pp!=1)
		{
			printf("ERR\n");
			a[i][5]=1;
			continue;
		}
		p=0;
		for(int j=0;j<5;++j)
		{
			h=pp=shangxian=qdl=0;
			for(int q=p;q<len;++q)
			{
				if(st[i][q]=='.'||st[i][q]==':')
				{
					if(j!=3&&st[i][q]==':')shangxian=1;
					if(j==3&&st[i][q]=='.')shangxian=1;
					if(q==p)shangxian=1;
					p=q+1;
					break;
				}
				qdl=1;
				if(!pp&&q-p>=1)
				{
					shangxian=1;
					break;
				}
				if(st[i][q]!='0')pp=1;
				if(h<=limi[j])h=h*10+int(st[i][q]-'0');
				else shangxian=1;
				if(h>limi[j])shangxian=1;
			}
			if(shangxian==1||!qdl)
			{
				a[i][5]=1;break;
			}
			a[i][j]=h;
		}
		jl=0;
		bool tr=0;
		if(!a[i][5])
		{
			for(int j=i-1;j>=1;--j)
			{
				if(!a[j][5]&&kf[j])
				{
					bool tru=0;
					for(int q=0;q<5;++q)
					{
						if(a[i][q]!=a[j][q])
						{
							tru=1;break;
						}
					}
					if(!tru)tr=1,jl=j;
				}
			}
		}
		else
		{
			printf("ERR\n");
			continue;
		}
		if(kf[i])
		{
			if(tr)
			{
				printf("FAIL\n");
			}
			else
			{
				printf("OK\n");
			}
		}
		else
		{
			if(tr)
			{
				printf("%d\n",jl);
			}
			else
			{
				printf("FAIL\n");
			}
		}
	}
	return 0;
}
